#include <stdio.h>
/**
 * 这个程序是拷贝的c primer plus 6中fgets2.c的代码。
 * 
 * 这个程序的运行结果还比较奇怪
 * 如果输入多于10个字符，且不是9的倍数的时候，输出结果和书上是一样的。
 * 但是假如输入9个字符，就会异常输出：
 * 正常的运行结果：
Enter strings (empty line to quit):
By the way, the gets() function
By the way, the gets() function
also returns a null pointer if it
also returns a null pointer if it
encounters end-of-file.
encounters end-of-file.

Done.
 * 不正常的运行结果：
Enter strings (empty line to quit):
zhuguoyin
zhuguoyinDone. 
 * 以下也是不正常的运行结果：
Enter strings (empty line to quit):
zhuguoyinzhuguoyin
zhuguoyinzhuguoyinDone.
 * 不论如何，fgets可以读入多于缓冲区的数据（多次读入），不像gets或者scanf一样，超长读入，产生把其他内存区域给覆盖的危险行为
*/
#define STLEN 10
int main(void)
{
    char words[STLEN];
    puts("Enter strings (empty line to quit):");
    while (fgets(words, STLEN, stdin) != NULL &&
           words[0] != '\n')
        fputs(words, stdout);
    puts("Done.");
    return 0;
}